home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 February
/
EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso
/
earcd
/
util1
/
yk211src.lha
/
Yak_2.11_Src
/
Prefs
/
GadTools
/
Blank_window.c
next >
Wrap
C/C++ Source or Header
|
1995-11-16
|
10KB
|
390 lines
/*
* Source machine generated by GadToolsBox V2.0b
* which is (c) Copyright 1991-1993 Jaba Development
*
* GUI Designed by : Martin W Scott, Gaël Marziou & Ph. Bastiani
*/
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <intuition/intuitionbase.h>
#include <libraries/gadtools.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/gadtools.h>
#include <proto/wb.h>
#include <string.h>
#include "yak.h"
#include "version.h"
#include "gui.h"
#include "Blank_Window.h"
#include "Settings.h"
#include "yak_locale_strings.h"
extern struct Catalog *Catalog;
extern LONG (*HandleIDCMP)(VOID);
struct Window *BlankWnd = NULL;
struct Gadget *BlankGList = NULL;
struct Gadget *BlankGadgets[Blank_CNT];
UWORD BlankWidth = 400;
UWORD BlankHeight = 119;
UBYTE *BlankWdt = NULL;
BOOL BlankWdi = FALSE;
struct AppWindow *BlankAppWin; /* AppWindow pointer */
IMPORT struct MsgPort *AppMsgPort;
/* Online help system */
IMPORT void ShowYakHelp(char *, char *);
IMPORT char *PrefsHelp;
UBYTE *MBMethod0Labels[4];
UBYTE *ScrBlMethod0Labels[4];
static VOID
InitMBMethod0Labels(VOID)
{
MBMethod0Labels[0] = getString(NONE_STRING);
MBMethod0Labels[1] = getString(SPRITES_STRING);
MBMethod0Labels[2] = getString(COPPER_STRING);
MBMethod0Labels[3] = NULL;
}
static VOID
InitScrBlMethod0Labels(VOID)
{
ScrBlMethod0Labels[0] = getString(NONE_STRING);
ScrBlMethod0Labels[1] = getString(BLACKSCREEN_STRING);
ScrBlMethod0Labels[2] = getString(DMA_STRING);
ScrBlMethod0Labels[3] = NULL;
}
#define Blank_TNUM 1
struct IntuiText BlankIText[Blank_TNUM] =
{
2,0,JAM1,261,81,NULL,NULL,NULL
};
static VOID
InitBlankITexts(VOID)
{
BlankIText[0].IText = getString(TIMEOUT_STRING);
}
UWORD BlankGTypes[] =
{
INTEGER_KIND,
INTEGER_KIND,
CYCLE_KIND,
BUTTON_KIND,
CHECKBOX_KIND,
CYCLE_KIND
};
struct NewGadget BlankNGad[] =
{
200, 68, 51,14,NULL,NULL,GD_ScrTONum ,PLACETEXT_LEFT ,NULL ,SCREENTIMEOUT_STRING,
200, 83, 51,14,NULL,NULL,GD_MouseTONum ,PLACETEXT_LEFT ,NULL ,MOUSETIMEOUT_STRING,
200, 19,193,14,NULL,NULL,GD_MBMethod ,PLACETEXT_LEFT ,NULL ,MOUSEBLANK_METHOD_STRING,
150,103,100,13,NULL,NULL,GD_Return3 ,PLACETEXT_IN ,NULL ,OK_STRING,
7, 35, 26,11,NULL,NULL,GD_BlankMouseOnKey,PLACETEXT_RIGHT,NULL ,BlankMouseOnKey_STRING,
200, 3,193,14,NULL,NULL,GD_ScrBlMethod ,PLACETEXT_LEFT ,NULL ,SCREENBLANK_METHOD_STRING
};
ULONG BlankGTags[] =
{
(GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
(GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
(GTCY_Labels),(ULONG)&MBMethod0Labels[ 0 ],(TAG_DONE),
(TAG_DONE),
(GTCB_Scaled),TRUE,(TAG_DONE),
(GTCY_Labels),(ULONG)&ScrBlMethod0Labels[ 0 ],(TAG_DONE)
};
static VOID
BlankRender(VOID)
{
UBYTE cnt;
UWORD X,Y, Width, Height;
ComputeFont(BlankWidth,BlankHeight);
Width = ComputeX( BlankWidth );
X = Y = 0;
Height = ComputeY(50);
DrawThinBevelBox( Scr, BlankWnd->RPort, X+OffX,Y+OffY,
Width,
Height,
FALSE );
Y += Height;
Height = ComputeY(100) - Y;
DrawThinBevelBox( Scr, BlankWnd->RPort, X+OffX,Y+OffY,
Width,
Height,
FALSE );
BlankIText[ 0 ].LeftEdge = X +5;
BlankIText[ 0 ].TopEdge = Y +3;
Y += Height;
Height = ComputeY(BlankHeight) - Y;
DrawThinBevelBox( Scr, BlankWnd->RPort, X+OffX,Y+OffY,
Width,
Height,
FALSE );
for (cnt = 0; cnt < Blank_TNUM; cnt++)
{
BlankIText[ cnt ].ITextFont = Font;
PrintIText(BlankWnd->RPort,&BlankIText[ cnt ],OffX,OffY);
}
}
int
OpenBlankWindow(VOID)
{
struct NewGadget ng;
struct Gadget *g;
UWORD lc,tc;
WORD wleft=WindowLeft, wtop=WindowTop;
UWORD ww, wh;
ComputeFont(BlankWidth,BlankHeight);
ww = OffX + ComputeX(BlankWidth) + Scr->WBorRight;
wh = OffY + ComputeY(BlankHeight) + Scr->WBorBottom;
SetUpWindowCoordinates(ww, wh, &wleft, &wtop);
if (! (g = CreateContext(&BlankGList)))
{
return(1L);
}
for(lc = 0,tc = 0; lc < Blank_CNT; lc++)
{
CopyMem((char *)&BlankNGad[ lc ],(char *)&ng,(long)sizeof(struct NewGadget));
ng.ng_VisualInfo = VisualInfo;
ng.ng_TextAttr = Font;
ng.ng_LeftEdge = OffX +ComputeX(ng.ng_LeftEdge);
ng.ng_TopEdge = OffY +ComputeY(ng.ng_TopEdge);
ng.ng_Width = ComputeX(ng.ng_Width);
ng.ng_Height = ComputeY(ng.ng_Height);
BlankGadgets[ lc ] = g = CreateGadgetA((ULONG)BlankGTypes[ lc ],g,&ng,(struct TagItem *) &BlankGTags[ tc ]);
while(BlankGTags[ tc ])
tc += 2;
tc++;
if (NOT g)
return(2L);
}
if (NOT (BlankWnd = OpenWindowTags(NULL,
WA_Left, wleft,
WA_Top, wtop,
WA_Width, ww,
WA_Height, wh,
WA_IDCMP, LISTVIEWIDCMP|STRINGIDCMP|CYCLEIDCMP|BUTTONIDCMP|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_RAWKEY,
WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH,
WA_Gadgets, BlankGList,
WA_Title, BlankWdt,
WA_ScreenTitle, getString(COPYRIGHT_STRING),
WA_PubScreen, Scr,
WA_PubScreenName,PubScreenName,
TAG_DONE)))
return(4L);
BlankAppWin = AddAppWindowA(0, 0, BlankWnd, AppMsgPort, NULL);
GT_RefreshWindow(BlankWnd,NULL);
BlankRender();
return(0L);
}
VOID
CloseBlankWindow(VOID)
{
CloseOneWindow(BlankWnd,NULL,BlankGList,BlankAppWin);
BlankWnd = NULL;
}
/* initialise all gadgets of Blank window */
static void
InitBlankGadgets(VOID)
{
InitToggleGadgets(BLANK_WINDOW);
InitWindowGadget(GDX_ScrTONum, GTIN_Number, blanksecs, BLANK_WINDOW);
InitWindowGadget(GDX_ScrTONum, GA_Disabled, !screenblank, BLANK_WINDOW);
InitWindowGadget(GDX_MouseTONum, GTIN_Number, mblanksecs, BLANK_WINDOW);
InitWindowGadget(GDX_MouseTONum, GA_Disabled, !mouseblank, BLANK_WINDOW);
InitWindowGadget(GDX_MBMethod, GTCY_Active, mouseblank, BLANK_WINDOW);
InitWindowGadget(GDX_ScrBlMethod, GTCY_Active, screenblank, BLANK_WINDOW);
}
/* handle Blank window events */
LONG
HandleBlankIDCMP(VOID)
{
struct IntuiMessage *msg;
struct Gadget *gadget;
ULONG class;
UWORD code;
LONG num;
BOOL close=FALSE;
LONG ret=RET_OKAY;
while (!close && (msg = GT_GetIMsg(BlankWnd->UserPort)))
{
class = msg->Class;
code = msg->Code;
gadget = (struct Gadget *)msg->IAddress;
GT_ReplyIMsg(msg);
switch (class)
{
case GADGETUP:
case GADGETDOWN:
switch (gadget->GadgetID)
{
case GD_Return3:
CloseBlankWindow();
if (!ShowWindowID(ROOT_WINDOW))
ret= RET_QUIT;
close=TRUE;
break;
case GD_ScrTONum:
num = GetNumber(gadget);
if (num >= 0)
blanksecs = num;
else
DisplayBeep(BlankWnd->WScreen);
InitWindowGadget(GDX_ScrTONum, GTIN_Number, blanksecs, BLANK_WINDOW);
break;
case GD_MouseTONum:
num = GetNumber(gadget);
if (num >= 0)
mblanksecs = num;
else
DisplayBeep(BlankWnd->WScreen);
InitWindowGadget(GDX_MouseTONum, GTIN_Number, mblanksecs, BLANK_WINDOW);
break;
case GD_BlankMouseOnKey:
blankmouseonkey ^= TRUE;
break;
case GD_MBMethod:
mouseblank = code;
InitWindowGadget(GDX_MouseTONum, GA_Disabled, !mouseblank, BLANK_WINDOW);
break;
case GD_ScrBlMethod:
screenblank = code;
InitWindowGadget(GDX_ScrTONum, GA_Disabled, !screenblank, BLANK_WINDOW);
break;
} /* switch (gadget->GadgetID) */
break;
case IDCMP_RAWKEY:
/* Help key pressed */
if (code == 95)
{
/* Display the node */
ShowYakHelp(PrefsHelp, "Blanking");
}
break;
case REFRESHWINDOW:
GT_BeginRefresh(BlankWnd);
GT_EndRefresh(BlankWnd, TRUE);
break;
} /* switch (class) */
} /* while more messages */
return ret;
}
/* show our blank window */
BOOL
ShowBlankWindow(VOID)
{
if (!BlankWdi)
{
BlankWdi = TRUE;
BlankWdt = getString(Blanking);
LocalizeNGadLabels (Blank_CNT, BlankNGad);
InitBlankITexts();
InitMBMethod0Labels ();
InitScrBlMethod0Labels ();
}
if (!OpenBlankWindow()) /* like the name says... */
{
InitBlankGadgets();
wndsigflag = 1 << BlankWnd->UserPort->mp_SigBit;
curwin = BlankWnd;
curwinID = BLANK_WINDOW;
HandleIDCMP = HandleBlankIDCMP;
return TRUE;
}
FreeGadgets(BlankGList);
CloseDownScreen();
curwin = NULL;
wndsigflag = 0L;
return FALSE;
}